from PIL import Image
import os


def images_to_pdf(image_folder,output_pdf):
    """
    将指定文件夹内的多个图片文件合并为一个PDF文件。

    :param image_folder: 包含图片文件的文件夹路径
    :param output_pdf: 输出PDF文件的路径
    """
    image_paths = []
    files = os.listdir(image_folder)
    for file in files:
        if file.lower().endswith((".png", ".jpg", ".jpeg")):
            image_paths.append(os.path.join(image_folder, file))
            print("正在处理："+file+" ......")
    images = [Image.open(x) for x in image_paths]
    # 确保所有图片具有相同的模式（例如RGB）和大小（可选）
    # 这里仅转换模式，不改变大小。如果需要统一大小，请取消注释并设置合适的尺寸
    if images:
        base_image = images[0]
        base_mode = base_image.mode
        # base_size = base_image.size  # 如果需要统一大小，请取消注释

        for img in images[1:]:
            if img.mode != base_mode:
                img = img.convert(base_mode)
                # 如果需要统一大小，请取消注释以下两行
            # if img.size != base_size:
            #     img = img.resize(base_size)

        # 使用Pillow的save功能，将图片列表保存为PDF
        # 注意：save_all=True 和 append_images 参数是关键的
        base_image.save(output_pdf, "PDF", resolution=100.0, save_all=True, append_images=images[1:])

    # 示例用法


path=input("请输入图片文件夹路径（例 C:/Users/ACLang/Pictures/Saved Pictures）：")
output_pdf = 'output.pdf'
images_to_pdf(path, output_pdf)
print("已生成output.pdf文件")
input("处理完成！")